package exception;

import java.io.FileOutputStream;

/**
 * 在JDK7之后，java推出了一个特性:自动关闭。
 * 该特性可以让我们应更精简的代码完成IO操作中的异常处理以及流的关闭
 * @author Xiloer
 *
 */
public class AutocloseableDemo {
	public static void main(String[] args) {
		/*
		 * try()中定义的流最终都会在finally中被关闭。该特性是编译器认可
		 * 的，代码最终会改为FinallyDemo2的样子。
		 * 并且需要注意，不是什么变量都可以定义在这里，只有实现了接口:
		 * AutoCloseable的才可以在这里定义。
		 * javaIO中的流和RandomAccessFile都实现了这个接口，可以定义在这里
		 */
		try(
			FileOutputStream fos = new FileOutputStream("fos.dat");
			//编译不通过，String没有实现AutoCloseable接口	
//			String str = "";	
		){
			fos.write(1);
			System.out.println("写出完毕!");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
